#include "serwertcp.h"
#include <boost/asio/io_service.hpp>
#include <cliext/vector>
#include "polaczenieWrapper.hpp"
#include "ramka.hpp"
#include "obserwator.h"
#include "obiektobserwowalny.h"
#include "symulator.h"


ref class Serwer : public Obserwator {
public:
   Serwer(short);
   void startuj();
   virtual void obserwuj(ObiektObserwowalny^);
   virtual void aktualizuj(int);   
   void wyslijWszystkim(std::string);

   private:
   void nasluchuj();
   void odbieranie(Object^ obj);
   void nowaRamka(Ramka, Polaczenie*);


   delegate System::Void nowyRamka_d (std::string);
   int aktywnychPolaczen;
   SerwerTCP* serwer;
   Symulator^ symulator;
   boost::asio::io_service* ioService;
   cliext::vector<System::Threading::Thread^> pulaWatkow;
   cliext::vector<PolaczenieWrapper^> wektorPolaczen;
   System::Threading::Thread^ glownyWatekSerwera;
   Autoryzowany^ fingerprint;
};
